using System;
using DataLayer;
using ListaDatos = CodeSoft.Datos.ListaDatos;


namespace CodeSoft.Logica
{
	/// <summary>
	/// Summary description for Confirmacion.
	/// </summary>
	public class Confirmacion:OrigenDatos
	{
		private Reunion reunion;
		private Miembro miembro;
		private DateTime fechaConfirmacion;
		
		public Confirmacion():base(ListaDatos.Obtener("Confirmaciones")) {}
		public Confirmacion(Registro reg):base(reg) {}
		public Confirmacion(int id):base(ListaDatos.Obtener("Confirmaciones"),id) {}
	
		public DateTime FechaConfirmacion
		{
			get { return fechaConfirmacion; }
			set { fechaConfirmacion = value; }
		}

		public Reunion Reunion
		{
			get
			{
				if (reunion == null && Registro!=null)
					reunion = (! Registro.DataRow.IsNull("idReunion"))? new Reunion((int)Registro.DataRow["idReunion"]) : null;

				return reunion;
			}
			set { reunion = value; }
		}

		public Miembro Miembro
		{
			get
			{
				if (miembro == null && Registro!=null)
					miembro = (! Registro.DataRow.IsNull("idMiembro"))? new Miembro((int)Registro.DataRow["idMiembro"]) : null;

				return miembro;
			}
			set { miembro = value; }
		}


		public override bool InicializarRegistro()
		{
			if (Registro != null)
			{
				FechaConfirmacion = (! Registro.DataRow.IsNull("FechaConfirmacion"))?(DateTime)Registro.DataRow["FechaConfirmacion"]:DateTime.MinValue;
				
				return true;
			}
			return false;
		}

		public override bool AsignarRegistro()
		{
			if (Registro != null)
			{
				Registro.DataRow["idReunion"] = (Reunion!=null && Reunion.ID>0)? (object)Reunion.ID:DBNull.Value;
				Registro.DataRow["idMiembro"] = (Miembro!=null && Miembro.ID>0)? (object)Miembro.ID:DBNull.Value;
				Registro.DataRow["FechaConfirmacion"] = (FechaConfirmacion == DateTime.MinValue)?(object)DBNull.Value:FechaConfirmacion;
				
				return true;
			}
			return false;
		}

		public new void Update()
		{
			if (! EsNuevo)
			{
				Refresh();

				if(Reunion != null)
					Reunion.Refresh();
				
				if(Miembro != null)
					Miembro.Refresh();
			}
		}
	}
}

